home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / Sample Code / Snippets / QuickDraw / Out of This GWorld / menu.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-07-15  |  3.4 KB  |  166 lines  |  [TEXT/KAHL]

  1. #include "out.h"
  2.  
  3. MenuHandle appleMenu, fileMenu, patMenu, animMenu;
  4.  
  5. enum {
  6.     appleID = 1,
  7.     fileID,
  8.     patID,
  9.     animID
  10. };
  11.  
  12. enum {
  13.     quitItem = 1
  14. };
  15.  
  16. enum {
  17.     pat1Item = 1,
  18.     pat2Item,
  19.     pat3Item,
  20.     pat4Item,
  21.     pat5Item,
  22.     pat6Item,
  23.     pat7Item,
  24.     pat8Item
  25. };
  26.  
  27. enum {
  28.     startItem = 1,
  29.     stopItem,
  30.     forItem = 4,
  31.     revItem,
  32.     colorItem = 7,
  33.     grayItem,
  34.     resetItem
  35. };
  36.  
  37. void setUpMenus()
  38. {
  39.     InsertMenu( appleMenu = NewMenu( appleID, "\p\024" ), 0 );
  40.     InsertMenu( fileMenu = NewMenu( fileID, "\pFile" ), 0 );
  41.     InsertMenu( patMenu = NewMenu( patID, "\pDemo" ), 0 );
  42.     InsertMenu( animMenu = NewMenu( animID, "\pAnimation" ), 0 );
  43.  
  44.     DrawMenuBar();
  45.     
  46.     AppendMenu( appleMenu, "\pAbout Out of This GWorld;(-" );
  47.     AddResMenu( appleMenu, 'DRVR' );
  48.     
  49.     AppendMenu( fileMenu, "\pQuit/Q" );
  50.     AppendMenu( patMenu, "\pColor Scale/1;Color Wheels/2;Color Rings/3;Color Gears/4;Color Curves/5;Color Balls/6;Color Wave/7;Color Text/8" );
  51.     AppendMenu( animMenu, "\pStart Animation/A;Stop Animation/S;(-;Forward/F;Reverse/R;(-;Color Palette/C;Gray Palette/G;Reset Palette/R" );
  52. }
  53.  
  54. void adjustMenus()
  55. {
  56.     register WindowPeek wp = (WindowPeek)FrontWindow();
  57.     short kind = wp ? wp->windowKind : 0;
  58.     Boolean DA = kind < 0;
  59.  
  60.     enable( fileMenu, quitItem, true );
  61.     enable( patMenu, pat1Item, gCurrentPat != pat1Item );
  62.     enable( patMenu, pat2Item, gCurrentPat != pat2Item );
  63.     enable( patMenu, pat3Item, gCurrentPat != pat3Item );
  64.     enable( patMenu, pat4Item, gCurrentPat != pat4Item );
  65.     enable( patMenu, pat5Item, gCurrentPat != pat5Item );
  66.     enable( patMenu, pat6Item, gCurrentPat != pat6Item );
  67.     enable( patMenu, pat7Item, gCurrentPat != pat7Item );
  68.     enable( patMenu, pat8Item, gCurrentPat != pat8Item );
  69.     
  70.     enable( animMenu, startItem, gCurrentMove != START );
  71.     enable( animMenu, stopItem, gCurrentMove != STOP );
  72.     enable( animMenu, forItem, gCurrentDir != FORWARD );
  73.     enable( animMenu, revItem, gCurrentDir != REVERSE );
  74.     enable( animMenu, colorItem, gCurrentColor != COLOR );
  75.     enable( animMenu, grayItem, gCurrentColor != GRAY );
  76.     enable( animMenu, resetItem, true );
  77. }
  78.  
  79. void enable( menu, item, ok )
  80. MenuHandle menu;
  81. {
  82.     if (ok)
  83.         EnableItem( menu, item );
  84.     else
  85.         DisableItem( menu, item );
  86. }
  87.  
  88. void handleMenu( mSelect )
  89. long mSelect;
  90. {
  91.     int            menuID = HiWord( mSelect );
  92.     int            menuItem = LoWord( mSelect );
  93.     GrafPtr        savePort;
  94.     Str255        name;
  95.     RGBColor    aColor;
  96.     
  97.     switch (menuID)
  98.     {
  99.         case appleID:
  100.             if (menuItem == 1)
  101.             {
  102.                 gCurrentPat = -1;
  103.                 defineColorPalette();
  104.                 updatePalette();
  105.                 createImage();
  106.                 drawImage();
  107.             }
  108.             else
  109.             {
  110.                 GetPort( &savePort );
  111.                 GetItem( appleMenu, menuItem, name );
  112.                 OpenDeskAcc( name );
  113.                 SetPort( savePort );
  114.             }
  115.             break;
  116.             
  117.         case fileID:
  118.             switch (menuItem)
  119.             {
  120.                 case quitItem:
  121.                     cleanUp();
  122.                     break;
  123.             }
  124.             break;
  125.             
  126.         case patID:
  127.             gCurrentPat = menuItem;
  128.             createImage();
  129.             drawImage();
  130.             break;
  131.             
  132.         case animID:
  133.             switch (menuItem)
  134.             {
  135.                 case startItem:
  136.                     gCurrentMove = START;
  137.                     break;
  138.                 case stopItem:
  139.                     gCurrentMove = STOP;
  140.                     break;
  141.                 case forItem:
  142.                     gCurrentDir = FORWARD;
  143.                     break;
  144.                 case revItem:
  145.                     gCurrentDir = REVERSE;
  146.                     break;
  147.                 case colorItem:
  148.                     defineColorPalette();
  149.                     updatePalette();
  150.                     break;
  151.                 case grayItem:
  152.                     defineGrayPalette();
  153.                     updatePalette();
  154.                     break;
  155.                 case resetItem:
  156.                     if (gCurrentColor == COLOR || gCurrentPat == -1)
  157.                         defineColorPalette();
  158.                     else
  159.                         defineGrayPalette();
  160.                     updatePalette();
  161.                     break;
  162.             }
  163.             break;
  164.     }
  165.     HiliteMenu( 0 );
  166. }